#ifndef SERIALPORT_HPP
#define SERIALPORT_HPP
#include <stdint.h>
#include <stdbool.h>

namespace device
{
	/**
	* @brief    串行通讯
	*/
	class serialport    ///底层端口类
	{
		public:
			virtual ~serialport(void);
			/** 
			* @brief    	打开端口
			* @retval   	操作结果
			*/
			virtual bool Open(void);
			/** 
			* @brief    	关闭端口
			* @retval  	 None
			*/
			virtual void Close(void);
			/** 
			* @brief      	写数据
			* @param[in]  	ucData   		数据
			* @param[in]  	usDataLen   数据长度
			* @retval    	 	操作结果
			*/
			virtual bool Write(uint8_t *ucData, uint16_t usDataLen);
			/** 
			* @brief      	写数据（重载）
			* @param[in]  	ucCmd   		指令
			* @param[in]  	usCmdLen   	指令长度
			* @param[in]  	ucData   		数据
			* @param[in]  	usDataLen   数据长度
			* @retval     	操作结果
			*/
			virtual bool Write(uint8_t *ucCmd, uint16_t usCmdLen, uint8_t *ucData, uint16_t usDataLen);
			/** 
			* @brief      	读数据
			* @param[out]  	ucData   		数据
			* @retval     	数据长度
			*/
			virtual uint16_t Read(uint8_t *ucData);
			/** 
			* @brief      	读数据（重载）
			* @param[in]  	ucRegAddr   寄存器地址
			* @param[out]  	ucData   		数据
			* @retval     	数据长度
			*/
			virtual bool Read(uint8_t *ucCmd, uint16_t usCmdLen, uint8_t *ucData, uint16_t usDataLen);
	};
}
#endif
